#include	<stdio.h>
#include	<stdlib.h>
#include	<string.h>
#include    <unistd.h>

#define	MAXARGS		20				
#define	ARGLEN		100				

int execute( char *arglist[] )
{
execvp(arglist[0], arglist);		
perror("execvp failed");
exit(1);
}

char * makestring( char *buf )
{
char	*cp;

buf[strlen(buf)-1] = '\0';		
cp = malloc( strlen(buf)+1 );		
if ( cp == NULL ){			
fprintf(stderr,"no memory\n");
exit(1);
}
strcpy(cp, buf);		
return cp;			
}
int main()
{
	char	*arglist[MAXARGS+1];		
		int		numargs;			
			char	argbuf[ARGLEN];			

				numargs = 0;
					while ( numargs < MAXARGS )
						{					
								printf("Arg[%d]? ", numargs);
										if ( fgets(argbuf, ARGLEN, stdin) && *argbuf != '\n' )
													arglist[numargs++] = makestring(argbuf);
															else
																	{
																				if ( numargs > 0 ){		
																								arglist[numargs]=NULL;	
																												execute( arglist );	
																																numargs = 0;		
}
}
}
return 0;
}
